HS 2025
LV-Leitung: Dr. Sandra Grinschgl / MSc. Aaron Friedli
Tutor: BSc. Lars Schilling
8. Einheit, 05.11.2025
Metadata
Response Labels
Stellt sicher dass diese Punkte auch ausgefüllt sind für die Schlussabgabe.
row.names = FALSE sorgt dafür, dass keine neue Spalte eingefügt wird, die alle Zeilen durchnummeriert (also einen zusätzlichen „Spaltennamen“ erzeugt).
Wenn ihr in eurem dat_full als erste Spalte eine solche Bezeichnung wie „…1“ findet, habt ihr dat_full wahrscheinlich ohne das Argument row.names = FALSE abgespeichert. Das ist nicht weiter schlimm, sollte aber bereinigt werden (z. B. mit select()).
# A tibble: 5 × 3
...1 code question1
<dbl> <dbl> <dbl>
1 1 1 2
2 2 2 3
3 3 3 2
4 4 4 1
5 5 5 3
Entfernen mit select()
Die beiden Funktionen unterscheiden sich nur in den verwendeten Trennzeichen:
write.csv() nutzt Kommas als Spaltentrenner und Punkte als Dezimaltrennzeichen.
write.csv2() nutzt Semikolons als Spaltentrenner und Kommas als Dezimaltrennzeichen.
Bottom Line: Nutzt write.csv() – sonst kann es passieren, dass Werte mit Nachkommastellen nicht korrekt von R interpretiert werden.
Kann nicht verwendet werden, um Rows/Zeilen auszuwählen! Auswahl von Spalten!
Aber: Dafür gibt es Funktionen wie slice() – allerdings wollen wir in der Regel keine Zeilen ohne logisches Kriterium auswählen.
👉 filter() ist deshalb meist die bessere Option.
Nützlich, um höchste und niedrigste Werte einzusehen – zum Beispiel, um eine Rangliste zu erstellen.
# A tibble: 344 × 9
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<fct> <fct> <dbl> <dbl> <int> <int>
1 Gentoo Biscoe 42.9 13.1 215 5000
2 Gentoo Biscoe 46.1 13.2 211 4500
3 Gentoo Biscoe 44.9 13.3 213 5100
4 Gentoo Biscoe 43.3 13.4 209 4400
5 Gentoo Biscoe 46.5 13.5 210 4550
6 Gentoo Biscoe 42 13.5 210 4150
7 Gentoo Biscoe 44 13.6 208 4350
8 Gentoo Biscoe 40.9 13.7 214 4650
9 Gentoo Biscoe 45.5 13.7 214 4650
10 Gentoo Biscoe 42.6 13.7 213 4950
# ℹ 334 more rows
# ℹ 3 more variables: sex <fct>, year <int>, id <int>
Wird genutzt, um Spalten zu verschieben – nützlich, um den Datensatz übersichtlicher zu gestalten, etwa indem man wichtige Variablen (z. B. ID, Gruppe) an den Anfang stellt.
# A tibble: 344 × 9
species bill_depth_mm island bill_length_mm flipper_length_mm body_mass_g
<fct> <dbl> <fct> <dbl> <int> <int>
1 Adelie 18.7 Torgersen 39.1 181 3750
2 Adelie 17.4 Torgersen 39.5 186 3800
3 Adelie 18 Torgersen 40.3 195 3250
4 Adelie NA Torgersen NA NA NA
5 Adelie 19.3 Torgersen 36.7 193 3450
6 Adelie 20.6 Torgersen 39.3 190 3650
7 Adelie 17.8 Torgersen 38.9 181 3625
8 Adelie 19.6 Torgersen 39.2 195 4675
9 Adelie 18.1 Torgersen 34.1 193 3475
10 Adelie 20.2 Torgersen 42 190 4250
# ℹ 334 more rows
# ℹ 3 more variables: sex <fct>, year <int>, id <int>
Viele Funktionen in R funktionieren nur mit vollständigen Datensätzen.
Kennwerte wie Mittelwerte oder Standardabweichungen können nicht berechnet werden, wenn fehlende Werte enthalten sind.
Fehlende Werte können Ergebnisse verzerren, insbesondere wenn sie nicht zufällig fehlen.
Finden / Identifizieren!
Nachvollziehen
Handling - abhängig von eurem Studiendesign und Fragestellungen
NA (R-typische Kennzeichnung für Not Available)
999 oder -999 (häufig manuell gesetzte Platzhalter)
leere Zellen ("")
NULL (in manchen Programmiersprachen, aber in R selten in Datensätzen verwendet)
Diverse Ansätze - Konkrete Übungen in den Hands On Übungen.
Fehlende Werte entfernen
Achtung: Je nach Analysemethode kann bereits ein einziger fehlender Wert dazu führen, dass eine ganze Versuchsperson aus der Analyse ausgeschlossen wird!
Fehlende Werte imputieren
Das bedeutet, fehlende Werte durch geschätzte Werte zu ersetzen (z. B. Mittelwert, Regression, Multiple Imputation).
→ Das üben wir nicht in diesem Seminar.
na.rm = TRUEDamit wir unsere Analysen sinnvoll durchführen können, müssen wir oft Skalen berechnen, also mehrere Items zu einem Gesamtwert zusammenfassen.
Schritte:
Transformation der Antwortformate (z. B. von „Trifft häufig zu“ zu numerischen Werten).
Beachtung von Reverse-Codierungen (z. B. beim Konstrukt Gewissenhaftigkeit: Item „Ich bin bequem, neige zur Faulheit“ muss umgepolt werden).
Berechnung der Skalenwerte (z. B. durch Mittelwertbildung der entsprechenden Items).
Einfache Variante
#Sparsamere Alternative:
dat_full <- dat_full |>
mutate(mmq_mean = rowMeans(select(dat_full, starts_with("question")),
na.rm = TRUE))
#Sparsamere Alternative:
dat_full <- dat_full |>
mutate(mmq_mean = rowMeans(across(question1:question18), na.rm = TRUE))
#Sparsamere Alternative:
dat_full <- dat_full %>%
rowwise() %>%
mutate(mmq_mean3 = mean(c_across(starts_with("question")), na.rm = TRUE))…Fehlende Werte und mögliche Umgangsformen angeschaut
… Skalenberechnung angeschaut
Hausübung 1 - Abgabe bis Freitag 07.11.2025 via Ilias (Ordner: Abgaben)
Peer-Feedback bis nächsten Mittwoch 12.11.2025
Direkte Kommentierung des Quartoskripts
Kurze Zusammenfassung im Forum (Ordner: EH8)!
Hands On Block 4 fertigstellen